home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d18 / ltcomm50.arc / LCTKRNL-.PAS < prev    next >
Pascal/Delphi Source File  |  1991-04-28  |  4KB  |  112 lines

  1. {$A-,B-,D-,E+,F-,I-,L-,N-,O-,R-,S-,V-}
  2. {$M 16384,0,655360}
  3.  
  4. (*
  5.     LiteComm-TP - LiteComm(tm) for Turbo Pascal
  6.                   Copyright(c) 1987, 1988, 1989-Information Technology, Ltd.
  7.  
  8.     LCTKRNL.PAS - Kernel functions for LiteComm-TP
  9. *)
  10.  
  11. unit LCTKRNL;
  12.  
  13. interface
  14.  
  15. uses
  16.   DOS;
  17.  
  18. CONST
  19.   PORTMASK = $000F;                  (* used in port validation *)
  20.  
  21.   DTR = $01;                         (* Data Terminal Ready *)
  22.   RTS = $02;                         (* Request TO Send *)
  23.   XON = $11;                         (* XON/XOFF characters *)
  24.   XOFF = $13;
  25.  
  26.   OverRun = $02;                     (* Error Status Masks *)
  27.   BadParity = $04;
  28.   BadFrame = $08;
  29.   BreakDet = $10;
  30.  
  31.   DeltaCTS = $01;                    (* Deltas = 1 IF bit changed *)
  32.   DeltaDSR = $02;
  33.   DeltaRI  = $04;
  34.   DeltaDCD = $08;
  35.   CTS = $10;                         (* Clear TO Send *)
  36.   DSR = $20;                         (* Data Set Ready *)
  37.   RI  = $40;                         (* Ring Indicator *)
  38.   DCD = $80;                         (* Carrier Detect *)
  39.  
  40. TYPE
  41.   BPtr = ^BYTE;
  42.   CCB = RECORD                     (* Communications Control Block *)
  43.     OldVector : POINTER;           (* save old interrupt vector *)
  44.     BasePort  : WORD;              (* base 8250 port *)
  45.     IntVec    : BYTE;              (* interrupt vector # for port *)
  46.     IrqMask   : BYTE;              (* the IRQ mask for the port *)
  47.     OldIrq    : BYTE;              (* previous mask *)
  48.     MdmStat   : BYTE;              (* last modem status *)
  49.     MdmCtl    : BYTE;              (* current mdm control value *)
  50.     LastErr   : BYTE;              (* last detected error *)
  51.     IntMask   : BYTE;              (* current int reg mask *)
  52.     XState    : BOOLEAN;           (* TRUE IF auto XON/XOFF *)
  53.     InXRecd   : BOOLEAN;           (* TRUE IF XOFF recd *)
  54.     OutXSent  : BOOLEAN;           (* TRUE IF XOFF auto-sent *)
  55.     BrkRecd   : BOOLEAN;           (* TRUE IF BREAK Detected *)
  56.     TxReady   : BOOLEAN;           (* TRUE IF transmitter available *)
  57.     InBuff    : BPtr;
  58.     InBuffLen : INTEGER;           (* input buffer abs size *)
  59.     InBuffCt  : INTEGER;           (* current # chars in input *)
  60.     InBuffMk  : INTEGER;           (* high-water mark for auto XOFF *)
  61.     InHead    : BPtr;
  62.     InTail    : BPtr;
  63.     InBuffEnd : BPtr;
  64.     OutBuff    : BPtr;
  65.     OutBuffLen : INTEGER;
  66.     OutBuffCt  : INTEGER;
  67.     OutHead    : BPtr;
  68.     OutTail    : BPtr;
  69.     OutBuffEnd : BPtr;
  70.     SaveStk    : POINTER;
  71.     NewStk     : POINTER;
  72.   END;                               (* CCB *)
  73.  
  74.   CCBPTR = ^CCB;
  75.  
  76. VAR
  77. {$F+}
  78.   CPorts : ARRAY [0..14] of CCBPTR;
  79. {$F-}
  80.  
  81. function PortChange(CPort:INTEGER; NewBase:WORD; NewIrq,NewVector:BYTE):BOOLEAN;
  82.  
  83. function CommSetup(CPort:INTEGER; Baud:WORD; Parity:char;
  84.                    DataBits, StopBits:INTEGER):BOOLEAN;
  85.  
  86. function CommOpen(CPort:INTEGER; Baud:WORD; Parity:char; Databits, Stopbits,
  87.                   InSize, OutSize:INTEGER; RaiseMdmCtl:BOOLEAN) : BOOLEAN;
  88.  
  89. PROCEDURE CommClose(CPort:INTEGER; DropMdmCtl:BOOLEAN);
  90.  
  91. PROCEDURE CommTx(Cptr:CCBPTR);
  92.  
  93. function SetModemSignals(CPort : INTEGER; NewSet : BYTE) : BOOLEAN;
  94.  
  95. function ClearModemSignals(CPort : INTEGER; NewSet : BYTE) : BOOLEAN;
  96.  
  97. function FlipModemSignals(CPort : INTEGER; NewSet : BYTE) : BOOLEAN;
  98.  
  99. function SendBreak(CPort : INTEGER) : BOOLEAN;
  100.  
  101. function ModemStatus(CPort : INTEGER) : BYTE;
  102.  
  103. function ErrorStatus(CPort : INTEGER) : BYTE;
  104.  
  105. function EnableXon(CPort:INTEGER; XonFlag:BOOLEAN) : BOOLEAN;
  106.  
  107. function XoffRecd(CPort:INTEGER) : BOOLEAN;
  108.  
  109. function XoffSent(CPort:INTEGER) : BOOLEAN;
  110.  
  111. function BreakRecd(CPort:INTEGER) : BOOLEAN;
  112.